#include <iostream>
#include <unistd.h>
#include <csignal>

using namespace std;

/**
 * C++ 信号处理  <csignal>
 *
 * signal() 函数，用来捕获突发事件，以下是signal()函数的语法：
 *
 *
 * SIGABRT   :     程序的异常终止，如调用abort
 * SIGFPE    :     错误的算术符，比如除以零或溢出的操作
 * SIGILL    :     检测非法指令
 * SIGINT    :     程序终止（interrupt）信号
 * SIGSEGV   :     非法访问内存
 * SIGTERM   :     发送到程序的终止请求
 *
 */

void signalHandler(int signum){
    cout << "Interrupt signal ( " << signum << ") received.\n";

    //清理并关闭
    //终止程序
    exit(signum);
}

int main() {

    //注册信号 SIGINT 和信号处理程序
    signal(SIGINT,signalHandler);

    while (1){
        cout << "Going to sleep....." << endl;
        sleep(1);
    }

    return 0;
}
